const express = require('express');

const app = express();

// 处理表单post 数据
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:false}));
// 设置ejs
app.set('view engine', 'ejs');
app.set('views', './views');
// 设置静态资源 public 
app.use(express.static(__dirname + '/public'));

// 导入notes数据模型，操作notes集合进行增删改查操作
const noteModel = require('./db/model/noteModel');
const { response } = require('express');

// 笔记列表显示
app.get('/note/list',(request,response)=>{
    // 将笔记全部查出来，进行展示
    noteModel.find((err,notes)=>{
        if(err){
            response.send('服务器崩了，明天再来');
            return;
        }
        // console.log('data',notes);
        // 说明一切正常
        response.render('list',{notes});
    })
    
})
// 添加笔记页面
app.get('/note/add',(request,response)=>{
    response.render('add');
})
app.post('/note/add',(request,response)=>{
    // 
    // console.log('form data',request.body);
    // 将表单提交过来的数据，写入数据库
    noteModel.create(request.body,(err,data)=>{
        if(err){
            response.send('添加笔记失败，请稍后重试');
            return;
        }
        // 添加成功，跳转到笔记列表页
        response.redirect('/note/list');
    })

})

// 编辑笔记页面
app.get('/note/edit/:_id',(request,response)=>{
    // 获取_id
    let _id = request.params._id;
    // 根据_id获取数据
    noteModel.findOne({_id},(err,note)=>{
        if(err){
            response.send('数据库错误');
            return;
        }
        // 分配数据到编辑模板
        response.render('edit',{note});
    })
})

// 编辑数据的表单提交处理
app.post('/note/edit', (request,response)=>{
    let {_id} = request.body;
    console.log('_id',_id);
    noteModel.updateOne({_id},request.body,(err,data)=>{
        if(err){
            response.send('数据库错误');
            return ;
        }
        // 更新成功，跳转到列表页
        response.redirect('/note/list');
    })
})
// 删除笔记
app.get('/note/delete/:_id', (request,response)=>{
    // 通过params参数可以获取要删除笔记的唯一id
    let _id = request.params._id;
    noteModel.deleteOne({_id},(err,data)=>{
        if(err){
            response.send('数据库错误');
            return;
        }
        // 删除成功后，跳回笔记列表
        response.redirect('/note/list');
    })

})

app.get('/note/ajax_delete',(request, response)=>{
    let _id = request.query._id;
    noteModel.deleteOne({_id},(err,data)=>{
        response.json({
            code:0,
            msg:'删除成功'
        })
    })
})

// ajax的编辑标题
app.get('/note/ajax_edit',(request,response)=>{
    let _id = request.query._id;
    console.log(_id);
    noteModel.updateOne({_id},request.query,(err,data)=>{
        if(!err){
            response.json({
                code:0,
                msg:'编辑成功'
            })
        }
    })
})

app.listen(80,()=>{
    console.log('server run at 80!');
})